CouchDB এর CRUD অপারেশন

Database Tutorials - কাউচডিবি (CouchDB)
217
217

CouchDB একটি ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস যা CRUD অপারেশন (Create, Read, Update, Delete) সম্পাদন করতে সক্ষম। এই অপারেশনগুলো HTTP API এর মাধ্যমে পরিচালিত হয় এবং JSON ফরম্যাটে ডেটা সংরক্ষণ করা হয়। নিচে CouchDB এর CRUD অপারেশন বিস্তারিতভাবে আলোচনা করা হলো।


1. Create (নতুন ডকুমেন্ট তৈরি করা)

CouchDB তে নতুন ডকুমেন্ট তৈরি করার জন্য POST বা PUT HTTP রিকুয়েস্ট ব্যবহার করা হয়। একটি নতুন ডকুমেন্ট তৈরি করতে, আপনি ডেটাবেসের URL এ একটি POST রিকুয়েস্ট পাঠাতে হবে, যেখানে ডকুমেন্টের ডেটা JSON ফরম্যাটে অন্তর্ভুক্ত থাকবে।

উদাহরণ:

POST রিকুয়েস্ট:
POST /my_database

ডেটা (JSON):

{
  "name": "John Doe",
  "age": 30,
  "city": "New York"
}

অপারেশন:
এটি একটি নতুন ডকুমেন্ট তৈরি করবে, যেখানে name, age, এবং city ফিল্ড থাকবে।

প্রত্যুত্তর:

{
  "ok": true,
  "id": "document_id",
  "rev": "1-xxx"
}

এখানে, "id" হচ্ছে নতুন ডকুমেন্টের অনন্য চিহ্ন এবং "rev" হচ্ছে ডকুমেন্টের প্রথম রিভিশন।


2. Read (ডকুমেন্ট রিড/ফেচ করা)

CouchDB তে একটি ডকুমেন্ট রিড করার জন্য GET HTTP রিকুয়েস্ট ব্যবহার করা হয়। একটি ডকুমেন্ট ফেচ করতে, ডকুমেন্টের _id ব্যবহার করে রিকুয়েস্ট করা হয়।

উদাহরণ:

GET রিকুয়েস্ট:
GET /my_database/document_id

অপারেশন:
এটি ডকুমেন্টের সমস্ত তথ্য ফিরিয়ে আনবে।

প্রত্যুত্তর:

{
  "_id": "document_id",
  "_rev": "1-xxx",
  "name": "John Doe",
  "age": 30,
  "city": "New York"
}

এখানে, "name", "age", এবং "city" ফিল্ডগুলি ডকুমেন্টের কন্টেন্ট হিসেবে প্রদর্শিত হচ্ছে।


3. Update (ডকুমেন্ট আপডেট করা)

CouchDB তে একটি ডকুমেন্ট আপডেট করতে PUT HTTP রিকুয়েস্ট ব্যবহার করা হয়। আপডেট করার জন্য, ডকুমেন্টের _id এবং _rev ফিল্ড প্রয়োজন হয়। _rev ফিল্ডটি আপডেটের আগে ডকুমেন্টের বর্তমান সংস্করণ চিহ্নিত করে।

উদাহরণ:

PUT রিকুয়েস্ট:
PUT /my_database/document_id

ডেটা (JSON):

{
  "_id": "document_id",
  "_rev": "1-xxx",
  "name": "John Doe",
  "age": 31,
  "city": "Los Angeles"
}

অপারেশন:
এটি ডকুমেন্টের age এবং city ফিল্ড আপডেট করবে।

প্রত্যুত্তর:

{
  "ok": true,
  "id": "document_id",
  "rev": "2-yyy"
}

এখানে, "rev" ফিল্ডটি ডকুমেন্টের নতুন সংস্করণ চিহ্নিত করছে।


4. Delete (ডকুমেন্ট মুছে ফেলা)

CouchDB তে একটি ডকুমেন্ট মুছে ফেলতে DELETE HTTP রিকুয়েস্ট ব্যবহার করা হয়। ডকুমেন্ট মুছে ফেলার জন্য, _id এবং _rev ফিল্ডগুলি প্রয়োজন হয়, কারণ _rev ফিল্ডটি ডকুমেন্টের সংস্করণ চিহ্নিত করে এবং কনফ্লিক্ট এড়াতে সহায়ক।

উদাহরণ:

DELETE রিকুয়েস্ট:
DELETE /my_database/document_id

ডেটা (JSON):

{
  "_id": "document_id",
  "_rev": "2-yyy"
}

অপারেশন:
এটি ডকুমেন্টটি মুছে ফেলবে।

প্রত্যুত্তর:

{
  "ok": true,
  "id": "document_id",
  "rev": "3-zzz"
}

এখানে, "rev" ফিল্ডটি মুছে ফেলার পরের সংস্করণকে চিহ্নিত করছে।


5. Bulk Operations (বাল্ক অপারেশন)

CouchDB তে একাধিক ডকুমেন্ট তৈরি, আপডেট বা মুছে ফেলতে _bulk_docs এন্ডপয়েন্ট ব্যবহার করা হয়। এতে একবারে একাধিক ডকুমেন্টের উপর অপারেশন করা সম্ভব।

উদাহরণ:

POST রিকুয়েস্ট:
POST /my_database/_bulk_docs

ডেটা (JSON):

{
  "docs": [
    {
      "name": "Alice",
      "age": 25,
      "city": "Chicago"
    },
    {
      "name": "Bob",
      "age": 35,
      "city": "San Francisco"
    }
  ]
}

অপারেশন:
এটি দুটি ডকুমেন্ট একসাথে ইনসার্ট করবে।

প্রত্যুত্তর:

[
  {
    "ok": true,
    "id": "document_id_1",
    "rev": "1-xxx"
  },
  {
    "ok": true,
    "id": "document_id_2",
    "rev": "1-yyy"
  }
]

এখানে, দুটি ডকুমেন্টের ইনসার্ট সফল হয়েছে এবং তাদের _id এবং _rev ফিল্ড সরবরাহ করা হয়েছে।


উপসংহার

CouchDB এর CRUD অপারেশনগুলো সোজা এবং কার্যকর, যেখানে HTTP API ব্যবহৃত হয়। এটি ডেটার JSON ভিত্তিক স্টোরেজ, রেপ্লিকেশন, কনফ্লিক্ট রেজোলিউশন, এবং উচ্চ স্কেলেবিলিটি সরবরাহ করে। CouchDB তে ডেটা ম্যানেজমেন্ট খুবই নমনীয়, যা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন এবং বড় ডেটাসেটগুলির জন্য আদর্শ।

common.content_added_by

Create: নতুন ডকুমেন্ট তৈরি

185
185

CouchDB বা MongoDB-এর মতো Document-Oriented Database-এ নতুন ডকুমেন্ট তৈরি একটি গুরুত্বপূর্ণ অপারেশন। এই অপারেশনটি ডেটাবেসে নতুন ডকুমেন্ট যুক্ত করার জন্য ব্যবহৃত হয়। ডকুমেন্টগুলি সাধারণত JSON বা BSON ফরম্যাটে থাকে, এবং ডকুমেন্টের মধ্যে বিভিন্ন key-value pairs থাকতে পারে। নিচে নতুন ডকুমেন্ট তৈরি করার প্রক্রিয়া এবং উদাহরণ দেয়া হলো:


1. CouchDB তে নতুন ডকুমেন্ট তৈরি করা

CouchDB তে নতুন ডকুমেন্ট তৈরি করতে, HTTP API ব্যবহার করতে হবে। এখানে একটি POST রিকুয়েস্ট প্রেরণ করতে হয়, যা ডেটাবেসে নতুন ডকুমেন্ট তৈরি করবে।

স্টেপস:

  1. HTTP POST রিকুয়েস্ট পাঠানো:
    • CouchDB এ নতুন ডকুমেন্ট তৈরি করতে HTTP POST রিকুয়েস্ট পাঠানো হয়।
  2. ডকুমেন্টের JSON ফরম্যাট:
    • ডকুমেন্টের ডেটা JSON ফরম্যাটে পাঠাতে হয়।

উদাহরণ:

HTTP Request:

POST /my_database HTTP/1.1
Host: localhost:5984
Content-Type: application/json
Authorization: Basic <username:password>

Request Body (JSON):

{
  "name": "John Doe",
  "age": 29,
  "email": "johndoe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "zip": "12345"
  }
}

অথবা:

  • আপনি curl ব্যবহার করেও POST রিকুয়েস্ট পাঠাতে পারেন।
curl -X POST http://localhost:5984/my_database -d '{
  "name": "John Doe",
  "age": 29,
  "email": "johndoe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "zip": "12345"
  }
}'

Response:

  • ডকুমেন্ট সফলভাবে তৈরি হলে _id এবং _rev ফিল্ড সহ একটি JSON অবজেক্ট রিটার্ন করবে।
{
  "id": "c0ffee19ceba7c510bd69f8a62b58f87",
  "rev": "1-232e54e1f2074bcbdadf07dbdd88895e"
}

এখানে:

  • _id: ডকুমেন্টের ইউনিক আইডেন্টিফায়ার।
  • _rev: ডকুমেন্টের সংস্করণ।

2. MongoDB তে নতুন ডকুমেন্ট তৈরি করা

MongoDB তে নতুন ডকুমেন্ট তৈরি করা বেশ সহজ। MongoDB-তে ডকুমেন্ট BSON ফরম্যাটে সংরক্ষিত হয়, যা JSON এর বাইনারি ফরম্যাট। MongoDB এর জন্য MongoDB Shell বা MongoDB Driver ব্যবহার করা যেতে পারে।

স্টেপস:

  1. MongoDB Shell ব্যবহার করে:
    • MongoDB Shell ব্যবহার করে আপনি ডাটাবেসে একটি নতুন ডকুমেন্ট ইনসার্ট করতে পারেন।

উদাহরণ:

MongoDB Shell:

use my_database;  // ডাটাবেস নির্বাচন করুন

db.users.insertOne({
  name: "John Doe",
  age: 29,
  email: "johndoe@example.com",
  address: {
    street: "123 Main St",
    city: "Anytown",
    zip: "12345"
  }
});

Response:

  • MongoDB এর থেকে রিটার্ন হবে একটি JSON অবজেক্ট, যা _id ফিল্ড সহ ডকুমেন্টটি সফলভাবে ইনসার্টের নির্দেশ দেয়।
{
  "acknowledged": true,
  "insertedId": ObjectId("60f5c4e4d1f77b13c1be1c9d")
}

এখানে:

  • _id: MongoDB দ্বারা অটোমেটিক্যালি জেনারেট করা একটি ইউনিক আইডেন্টিফায়ার।

3. API ব্যবহার করে নতুন ডকুমেন্ট তৈরি করা

আপনি যদি কোন প্রোগ্রামিং ভাষা (যেমন Python, Node.js, PHP, etc.) ব্যবহার করতে চান, তবে ডেটাবেসের HTTP API বা ড্রাইভার ব্যবহার করতে পারেন নতুন ডকুমেন্ট তৈরি করার জন্য।

Python (requests লাইব্রেরি ব্যবহার করে):

import requests
import json

url = "http://localhost:5984/my_database"
headers = {'Content-Type': 'application/json'}
data = {
    "name": "John Doe",
    "age": 29,
    "email": "johndoe@example.com",
    "address": {
        "street": "123 Main St",
        "city": "Anytown",
        "zip": "12345"
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())

Node.js (axios লাইব্রেরি ব্যবহার করে):

const axios = require('axios');

const data = {
  name: "John Doe",
  age: 29,
  email: "johndoe@example.com",
  address: {
    street: "123 Main St",
    city: "Anytown",
    zip: "12345"
  }
};

axios.post('http://localhost:5984/my_database', data, {
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

4. নতুন ডকুমেন্ট তৈরি করার সুবিধা

  • স্কিমা-লেস: ডকুমেন্ট-ভিত্তিক ডাটাবেসে ডেটার কোনো পূর্বনির্ধারিত কাঠামো বা স্কিমা নেই, ফলে ডেটা খুব সহজে সংরক্ষণ এবং পরিবর্তন করা যায়।
  • নমনীয়তা: ডকুমেন্টে যে কোনো ধরনের ডেটা (যেমন অবজেক্ট, অ্যারে, স্ট্রিং) রাখতে পারবেন।
  • পারফরম্যান্স: দ্রুত ইনসার্ট অপারেশন এবং সহজ ডেটা রিড-রাইট এর সুবিধা দেয়।

সারাংশ: নতুন ডকুমেন্ট তৈরি করার প্রক্রিয়া ডকুমেন্ট-ভিত্তিক ডাটাবেসে খুবই সহজ এবং নমনীয়। HTTP API, ডাটাবেস শেল, বা প্রোগ্রামিং ভাষার মাধ্যমে আপনি দ্রুত ডকুমেন্ট তৈরি করতে পারেন, যা আপনার অ্যাপ্লিকেশনের জন্য উপযুক্ত।

common.content_added_by

Read: ডকুমেন্ট রিড/ফেচ করা

196
196

CouchDB-তে একটি ডকুমেন্ট পড়া বা ফেচ করা একটি মৌলিক অপারেশন, যা HTTP API ব্যবহার করে খুব সহজেই করা যায়। CouchDB-তে একটি ডকুমেন্ট _id (অনন্য চিহ্ন) এর মাধ্যমে অ্যাক্সেস করা হয় এবং এটি GET HTTP রিকুয়েস্টের মাধ্যমে রিড করা হয়। নিচে বিস্তারিতভাবে ডকুমেন্ট রিড/ফেচ করার পদ্ধতি এবং প্রক্রিয়া আলোচনা করা হলো।


1. ডকুমেন্ট রিড/ফেচ করার প্রক্রিয়া

a. CouchDB RESTful API ব্যবহার করে ডকুমেন্ট রিড করা

CouchDB এর সাথে যোগাযোগ করার জন্য HTTP API ব্যবহার করা হয়। একটি ডকুমেন্ট পড়তে GET রিকুয়েস্ট পাঠানো হয়। এই রিকুয়েস্টে ডকুমেন্টের _id এবং _rev (যদি প্রয়োজন হয়) পাঠানো হয়।

b. ডকুমেন্ট রিডের সাধারণ সিঙ্ক্রোনাস রিকুয়েস্ট

ডকুমেন্ট রিড করার জন্য নিচের মতো একটি GET রিকুয়েস্ট পাঠানো হয়:

GET /db_name/document_id

এখানে:

  • db_name: ডেটাবেসের নাম, যেখানে ডকুমেন্টটি সংরক্ষিত আছে।
  • document_id: ডকুমেন্টটির _id (অন্যতম চিহ্নিতকরণ), যা ডকুমেন্টকে অনন্যভাবে চিহ্নিত করে।

c. কনসোল/HTTP রিকুয়েস্ট এক্সাম্পল

curl -X GET http://127.0.0.1:5984/mydatabase/mydoc123

এখানে:

  • 127.0.0.1:5984: CouchDB সার্ভারের URL এবং পোর্ট নম্বর।
  • mydatabase: ডেটাবেসের নাম।
  • mydoc123: ডকুমেন্টের _id

d. রেসপন্স

ডকুমেন্ট রিড করার পর, সার্ভার থেকে একটি JSON রেসপন্স আসবে, যা ডকুমেন্টের ডেটা এবং অতিরিক্ত তথ্য ধারণ করে। যেমন:

{
  "_id": "mydoc123",
  "_rev": "1-2345abcd6789efgh",
  "name": "John Doe",
  "email": "johndoe@example.com",
  "age": 30
}

এখানে:

  • _id: ডকুমেন্টের অনন্য চিহ্ন।
  • _rev: ডকুমেন্টের সংস্করণ (revision)।
  • name, email, age: ডকুমেন্টের মধ্যে থাকা অন্যান্য ফিল্ড।

2. ডকুমেন্ট রিড/ফেচ করার অতিরিক্ত ফিচারসমূহ

a. ডকুমেন্ট ফিল্টারিং এবং কুয়েরি

কিছু ক্ষেত্রে, আপনি View ব্যবহার করে ডকুমেন্ট ফিল্টার করতে পারেন, যাতে নির্দিষ্ট শর্তে ডেটা ফেচ করা যায়। যেমন:

GET /db_name/_design/myview/_view/myfilter?key="John Doe"

এখানে:

  • _design/myview/_view/myfilter: একটি প্রিফিক্স যা কাস্টম তৈরি করা View-এর মাধ্যমে ডেটা কুয়েরি করবে।
  • key: নির্দিষ্ট মান বা শর্ত যা ফিল্টার করবে।

b. কনফ্লিক্ট রিজল্যুশন (Conflict Resolution)

যখন একটি ডকুমেন্টের একাধিক সংস্করণ (revision) থাকে, তখন _rev ফিল্ডের মাধ্যমে নির্দিষ্ট সংস্করণটি রিড করা হয়। যদি কোন কনফ্লিক্ট ঘটে, তবে CouchDB _rev ফিল্ডের সাহায্যে সর্বশেষ সংস্করণ নির্বাচন করে।

c. ডকুমেন্ট রিড করতে include_docs অপশন ব্যবহার

আপনি _changes API এর মাধ্যমে include_docs=true সেট করে সংশ্লিষ্ট ডকুমেন্টগুলো ফেচ করতে পারেন:

GET /mydatabase/_changes?include_docs=true

এটি সমস্ত পরিবর্তিত ডকুমেন্টের সাথে তাদের ডেটাও ফিরিয়ে দেবে।


3. রিড অপারেশন এর উন্নত ব্যবহার

a. Partial Fetch (ডেটার একটি অংশ পড়া)

কিছু পরিস্থিতিতে, আপনি শুধু ডকুমেন্টের নির্দিষ্ট ফিল্ড ফেচ করতে চাইলে, আপনি HTTP HEAD রিকুয়েস্ট ব্যবহার করতে পারেন। উদাহরণ:

HEAD /db_name/document_id

এটি ডকুমেন্টের মেটাডেটা প্রদান করবে, কিন্তু ডকুমেন্টের পুরো কনটেন্ট নয়।

b. Conditional Fetch (শর্তাধীন ফেচ)

CouchDB HTTP API-তে If-None-Match বা If-Match হেডার ব্যবহার করে শর্তযুক্ত রিড করা সম্ভব। উদাহরণস্বরূপ:

GET /db_name/document_id HTTP/1.1
If-None-Match: "etag_value"

এটি শুধুমাত্র তখনই ডকুমেন্ট রিটার্ন করবে যদি etag_value মেলে না।


4. CouchDB তে ডকুমেন্ট রিড করার উপকারিতা

  1. নমনীয়তা: CouchDB তে ডকুমেন্ট রিডের জন্য স্কিমা নির্ভরশীলতা নেই, ফলে যেকোনো ধরণের ডেটা স্ট্রাকচার সহজেই রিড করা যায়।
  2. ডিস্ট্রিবিউটেড আর্কিটেকচার: CouchDB এর রেপ্লিকেশন ও সিঙ্ক্রোনাইজেশন ফিচারের মাধ্যমে, ডকুমেন্টের রিড প্রক্রিয়া বিভিন্ন সার্ভারে সমন্বয় করা যায়।
  3. রিয়েল-টাইম অ্যাক্সেস: CouchDB রিয়েল-টাইম ডেটা অ্যাক্সেসের জন্য উপযুক্ত, বিশেষ করে যখন ডেটার পরিবর্তন এবং আপডেট দ্রুত হওয়া প্রয়োজন।

উপসংহার

CouchDB তে ডকুমেন্ট রিড/ফেচ করা একটি সহজ এবং কার্যকর প্রক্রিয়া, যা HTTP API এর মাধ্যমে দ্রুত এবং দক্ষভাবে ডেটা অ্যাক্সেস করতে সহায়ক। ডকুমেন্টের _id ব্যবহার করে দ্রুত রিড অপারেশন সম্ভব, এবং এর মধ্যে থাকা MapReduce Views এবং অন্যান্য কুয়েরি পদ্ধতিগুলি ডেটা অ্যাক্সেস আরও শক্তিশালী করে তোলে।

common.content_added_by

Update: ডকুমেন্ট আপডেট করা

179
179

ডকুমেন্ট-ভিত্তিক ডাটাবেসে Update অপারেশনটি ডেটার বিদ্যমান ডকুমেন্ট বা রেকর্ড পরিবর্তন বা সংশোধন করার জন্য ব্যবহৃত হয়। এই অপারেশনে ডকুমেন্টের পুরনো মানগুলি নতুন মানের সাথে প্রতিস্থাপন করা হয়। CouchDB বা MongoDB-এর মতো ডকুমেন্ট-ভিত্তিক ডাটাবেসে ডেটা JSON বা BSON ফরম্যাটে থাকে, এবং Update অপারেশনটি সাধারণত ডকুমেন্টের key-value pairs বা nested structures পরিবর্তন করে।

ডকুমেন্ট আপডেট করার প্রক্রিয়া:

  1. ডকুমেন্ট নির্বাচন:
    • প্রথমে সেই ডকুমেন্টটি চিহ্নিত করতে হবে, যা আপডেট করতে চান। সাধারণত, এটি _id (ডকুমেন্টের অনন্য শনাক্তকারী) দ্বারা নির্বাচিত হয়।
  2. ডকুমেন্টের রিভিশন (_rev):
    • CouchDB-এর মতো ডকুমেন্ট-ভিত্তিক ডাটাবেসে, _rev ফিল্ডের মাধ্যমে ডকুমেন্টের সংস্করণ (revision) ট্র্যাক করা হয়। আপডেট করার সময়, _rev মানটি নতুন রিভিশন নম্বরের সাথে পরিবর্তিত হয়।
    • _rev ফিল্ডের মাধ্যমে ডেটা কনফ্লিক্ট সমাধান করা হয়, যাতে নিশ্চিত করা যায় যে একাধিক ব্যবহারকারী একই ডকুমেন্ট আপডেট না করেন।
  3. ডকুমেন্ট পরিবর্তন:
    • আপডেট করার জন্য নতুন মান প্রদান করতে হয়। এটি সাধারণত কিউরি বা ফর্ম ডেটা এর মাধ্যমে করা হয়, যেখানে ডকুমেন্টের কিছু key-value pair পরিবর্তন করা হয়।
  4. ডকুমেন্ট সংরক্ষণ:
    • নতুন মান সহ ডকুমেন্টটি পুনরায় সংরক্ষণ করা হয়। এই প্রক্রিয়ার মাধ্যমে ডেটাবেসে নতুন _rev তৈরি হয়, যা আগের সংস্করণের পরিবর্তে ব্যবহার করা হয়।
  5. কনফ্লিক্ট সমাধান:
    • যদি একাধিক ট্রানজেকশন একই ডকুমেন্ট পরিবর্তন করার চেষ্টা করে, তবে কনফ্লিক্ট হতে পারে। CouchDB বা MongoDB এই কনফ্লিক্ট সমাধানের জন্য ডকুমেন্টের _rev ফিল্ড ব্যবহার করে।

উদাহরণ: CouchDB তে ডকুমেন্ট আপডেট করা

ধরা যাক, আমাদের একটি ডকুমেন্ট আছে যার _id হলো user123, এবং এটি কিছু তথ্য সংরক্ষণ করে:

{
  "_id": "user123",
  "_rev": "1-2345",
  "name": "John Doe",
  "email": "john.doe@example.com"
}

এখন, আমরা ব্যবহারকারীর email ঠিকানা আপডেট করতে চাই। এটি করার জন্য, আমরা নতুন মানের সাথে _rev ফিল্ডের মানও অন্তর্ভুক্ত করি।

আপডেট করার জন্য রিকুয়েস্ট:

{
  "_id": "user123",
  "_rev": "1-2345", 
  "name": "John Doe",
  "email": "john.doe@newdomain.com"
}

এই আপডেটের পর, CouchDB বা MongoDB নতুন _rev তৈরি করবে, যেমন "2-6789", এবং ডকুমেন্টটি নতুন মানে সংরক্ষণ করবে।


MongoDB তে ডকুমেন্ট আপডেট

MongoDB তে, আপডেট করার জন্য update() বা updateOne() ফাংশন ব্যবহার করা হয়।

MongoDB তে ডকুমেন্ট আপডেটের উদাহরণ:

db.users.updateOne(
  { _id: "user123" }, // ফিল্টার (যে ডকুমেন্টটি আপডেট করতে হবে)
  { $set: { email: "john.doe@newdomain.com" } } // আপডেট অপারেশন
);

এখানে, $set অপারেটরটি ব্যবহার করে email ফিল্ডটি আপডেট করা হয়েছে। MongoDB এই পরিবর্তনটি ডকুমেন্টে সংরক্ষণ করবে।


ডকুমেন্ট আপডেট করার সুবিধা

  1. ডেটা ম্যানিপুলেশন: ডকুমেন্ট আপডেট অপারেশন আপনাকে ডেটার ভিতরের উপাদানগুলি পরিবর্তন করতে সক্ষম করে, যা ডাইনামিক অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ।
  2. কমপ্লেক্স কুয়েরি: আপডেট অপারেশনে বিভিন্ন কুয়েরি ব্যবহার করে নির্দিষ্ট কন্ডিশন অনুযায়ী ডেটা পরিবর্তন করা যায়, যেমন filtering এবং sorting
  3. কনফ্লিক্ট ম্যানেজমেন্ট: _rev ফিল্ডের মাধ্যমে আপডেট অপারেশন কনফ্লিক্ট ম্যানেজমেন্টে সহায়ক, বিশেষ করে যখন একাধিক ব্যবহারকারী একই ডকুমেন্ট পরিবর্তন করতে চেষ্টা করে।

উপসংহার

ডকুমেন্ট আপডেট একটি গুরুত্বপূর্ণ কার্যক্রম, যা ডেটাবেসে ডেটার সংশোধন এবং পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি সহজেই JSON বা BSON ডকুমেন্টের ফরম্যাটে কাজ করে এবং _rev ফিল্ডের মাধ্যমে কনফ্লিক্ট সমাধান করতে সাহায্য করে। ডকুমেন্ট-ভিত্তিক ডাটাবেসগুলিতে, যেমন CouchDB বা MongoDB, আপডেট অপারেশনটি অত্যন্ত নমনীয় এবং ডেটার উপর একটি কার্যকর ও দ্রুত পরিবর্তন করতে সহায়ক।

common.content_added_by

Delete: ডকুমেন্ট মুছে ফেলা

184
184

CouchDB একটি ডকুমেন্ট-ভিত্তিক ডাটাবেস, যেখানে ডেটা JSON ডকুমেন্ট আকারে সংরক্ষণ করা হয়। কখনও কখনও একটি ডকুমেন্ট মুছে ফেলতে হতে পারে, এবং CouchDB এই কাজটি করার জন্য বিশেষ একটি পদ্ধতি প্রদান করে। ডকুমেন্ট মুছে ফেলতে হলে, আপনাকে ডকুমেন্টের _id এবং _rev (রিভিশন নম্বর) ফিল্ড ব্যবহার করতে হবে।

CouchDB-তে ডকুমেন্ট মুছে ফেলার পদ্ধতি

  1. ডকুমেন্টের _id এবং _rev সংগ্রহ করা
    CouchDB তে ডকুমেন্ট মুছে ফেলতে হলে, আপনাকে প্রথমে মুছতে চাওয়া ডকুমেন্টের _id এবং _rev ফিল্ডের মান জানাতে হবে। _rev হল ডকুমেন্টের রিভিশন নম্বর, যা নিশ্চিত করে যে আপনি সঠিক সংস্করণ মুছে ফেলছেন।
  2. HTTP DELETE রিকুয়েস্ট পাঠানো
    CouchDB তে ডকুমেন্ট মুছে ফেলতে HTTP DELETE রিকুয়েস্ট ব্যবহার করতে হয়। এই রিকুয়েস্টের মাধ্যমে আপনি একটি নির্দিষ্ট ডকুমেন্ট মুছে ফেলতে পারেন।

DELETE রিকুয়েস্টের সঠিক ফরম্যাট

CouchDB-তে একটি ডকুমেন্ট মুছে ফেলার জন্য আপনাকে নিম্নলিখিত রিকুয়েস্টটি পাঠাতে হবে:

DELETE /<database>/<document_id>?rev=<revision_id>

এখানে:

  • : আপনি যে ডাটাবেসে ডকুমেন্টটি মুছতে চান, তার নাম।
  • <document_id>: মুছতে চাওয়া ডকুমেন্টের _id
  • <revision_id>: মুছতে চাওয়া ডকুমেন্টের _rev ফিল্ডের মান, যা ডকুমেন্টের সংস্করণ নির্দেশ করে।

উদাহরণ:

ধরা যাক, আপনি একটি ডকুমেন্ট মুছতে চান যার _id হল 12345 এবং _rev হল 1-2345abcde. এর জন্য আপনাকে নিম্নলিখিত DELETE রিকুয়েস্ট পাঠাতে হবে:

DELETE /my_database/12345?rev=1-2345abcde

এই রিকুয়েস্টটি সফল হলে, CouchDB ডকুমেন্টটি মুছে ফেলবে এবং একটি 200 OK স্ট্যাটাস কোড রিটার্ন করবে। যদি _rev ভুল থাকে অথবা ডকুমেন্টটি খুঁজে না পাওয়া যায়, তবে একটি 404 Not Found অথবা 409 Conflict এর মতো ত্রুটি কোড রিটার্ন করা হবে।


CouchDB তে ডকুমেন্ট মুছে ফেলার প্রক্রিয়া

  1. প্রথমে ডকুমেন্ট পাওয়া: আপনি যেই ডকুমেন্টটি মুছে ফেলতে চান, সেটি GET রিকুয়েস্ট দিয়ে প্রথমে সার্ভার থেকে নিয়ে আসবেন। উদাহরণ:

    GET /my_database/12345
    

    এই রিকুয়েস্টের মাধ্যমে আপনি ডকুমেন্টের _id এবং _rev ফিল্ডের মান পাবেন।

  2. মুছুন ডকুমেন্ট: পরে, উপরের নির্দেশনা অনুযায়ী DELETE রিকুয়েস্ট পাঠান। উদাহরণ:

    DELETE /my_database/12345?rev=1-2345abcde
    
  3. ডকুমেন্টের মুছে যাওয়া নিশ্চিত করা: সফলভাবে ডকুমেন্ট মুছে গেলে, আপনি একটি 200 OK স্ট্যাটাস কোড পাবেন, যা নিশ্চিত করে যে ডকুমেন্টটি সফলভাবে মুছে গেছে।

গুরুত্বপূর্ণ বিষয়

  • _rev ফিল্ড: CouchDB এর _rev ফিল্ড ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি নিশ্চিত করে যে আপনি সঠিক সংস্করণ মুছে ফেলছেন। যদি _rev ভুল হয়, তবে ডকুমেন্টটি মুছে ফেলা হবে না এবং একটি কনফ্লিক্ট ত্রুটি দেখানো হবে।
  • Soft Delete: CouchDB তে ডকুমেন্ট মুছে ফেলা soft delete পদ্ধতির মতো কাজ করে, যেখানে ডকুমেন্টটি সিস্টেম থেকে সরিয়ে ফেলা হয় তবে পরে replication প্রক্রিয়া এবং revision control এর মাধ্যমে এটি পুনরুদ্ধার করা যেতে পারে।

CouchDB-তে ডকুমেন্ট মুছে ফেলা একটি খুবই গুরুত্বপূর্ণ এবং সাধারণ অপারেশন, যেহেতু এতে সিস্টেমে থাকা অপ্রয়োজনীয় ডেটা মুছে ফেলা যায়। তবে, এটি করার সময় অবশ্যই ডকুমেন্টের _rev সঠিকভাবে ব্যবহার করা প্রয়োজন, যাতে সঠিক সংস্করণ মুছে ফেলা হয়।

common.content_added_by

Bulk Operations

206
206

Bulk Operations একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা CouchDB-তে একযোগে একাধিক ডকুমেন্ট তৈরি, আপডেট বা মুছে ফেলার প্রক্রিয়া সহজ করে তোলে। এটি বিশেষভাবে বড় ডেটাসেট বা উচ্চ কার্যকারিতা সম্পন্ন অ্যাপ্লিকেশনের জন্য উপযুক্ত, যেখানে একাধিক ডকুমেন্ট একবারে প্রক্রিয়া করা দরকার।

CouchDB এ Bulk Operations পরিচালনা করার জন্য সাধারণত Bulk Documents API ব্যবহার করা হয়। এর মাধ্যমে একাধিক ডকুমেন্টের CRUD (Create, Read, Update, Delete) অপারেশন একযোগে করা যেতে পারে, যা সার্ভারের প্রতি রিকুয়েস্টের সংখ্যা কমিয়ে দেয় এবং পারফরম্যান্স উন্নত করতে সহায়ক।


1. Bulk Document Insertion (নতুন ডকুমেন্ট তৈরি)

CouchDB তে একাধিক নতুন ডকুমেন্ট একসাথে তৈরি করার জন্য Bulk Documents API ব্যবহার করা হয়। এখানে আপনি একাধিক ডকুমেন্টের JSON অবজেক্ট একত্রে পাঠাতে পারেন।

HTTP রিকুয়েস্ট

POST রিকুয়েস্ট ব্যবহার করে আপনি একাধিক ডকুমেন্ট তৈরি করতে পারেন:

POST http://localhost:5984/your_database/_bulk_docs

Request Body Example:

{
   "docs": [
      {
         "_id": "doc1",
         "name": "John Doe",
         "age": 30
      },
      {
         "_id": "doc2",
         "name": "Jane Smith",
         "age": 25
      },
      {
         "_id": "doc3",
         "name": "Sam Green",
         "age": 35
      }
   ]
}

Response Example:

[
   {
      "id": "doc1",
      "rev": "1-23456"
   },
   {
      "id": "doc2",
      "rev": "1-34567"
   },
   {
      "id": "doc3",
      "rev": "1-45678"
   }
]

এই প্রক্রিয়ায়, CouchDB একযোগে সমস্ত ডকুমেন্ট তৈরি করে এবং তাদের _rev ফিল্ড সহ সাড়া পাঠায়।


2. Bulk Document Update (ডকুমেন্ট আপডেট করা)

CouchDB-তে বিদ্যমান ডকুমেন্ট আপডেট করতে হলে, আপনি _rev ফিল্ড সহ ডকুমেন্টটি পাঠাতে হবে। Bulk update অপারেশন একইভাবে Bulk Documents API ব্যবহার করে করা যায়।

HTTP রিকুয়েস্ট

POST রিকুয়েস্ট ব্যবহার করে আপনি একাধিক ডকুমেন্ট আপডেট করতে পারেন:

POST http://localhost:5984/your_database/_bulk_docs

Request Body Example:

{
   "docs": [
      {
         "_id": "doc1",
         "_rev": "1-23456",
         "name": "John Doe",
         "age": 31
      },
      {
         "_id": "doc2",
         "_rev": "1-34567",
         "name": "Jane Smith",
         "age": 26
      }
   ]
}

Response Example:

[
   {
      "id": "doc1",
      "rev": "2-56789"
   },
   {
      "id": "doc2",
      "rev": "2-67890"
   }
]

এই ক্ষেত্রে, আপনি যে ডকুমেন্টগুলিকে আপডেট করতে চান তাদের _rev ফিল্ড ব্যবহার করতে হবে। CouchDB নতুন _rev পাসপোর্টের সাথে সংশোধিত ডকুমেন্টগুলির সাড়া পাঠাবে।


3. Bulk Document Deletion (ডকুমেন্ট মুছে ফেলা)

একইভাবে, Bulk Documents API ব্যবহার করে একাধিক ডকুমেন্ট মুছে ফেলা যায়। ডকুমেন্ট মুছে ফেলার জন্য, আপনাকে _id এবং _rev সহ ডকুমেন্ট পাঠাতে হবে, যাতে CouchDB নিশ্চিত করতে পারে যে এটি সঠিক ডকুমেন্ট মুছে ফেলছে।

HTTP রিকুয়েস্ট

POST রিকুয়েস্ট ব্যবহার করে আপনি একাধিক ডকুমেন্ট মুছে ফেলতে পারেন:

POST http://localhost:5984/your_database/_bulk_docs

Request Body Example:

{
   "docs": [
      {
         "_id": "doc1",
         "_rev": "2-56789",
         "_deleted": true
      },
      {
         "_id": "doc2",
         "_rev": "2-67890",
         "_deleted": true
      }
   ]
}

Response Example:

[
   {
      "id": "doc1",
      "rev": "3-78901"
   },
   {
      "id": "doc2",
      "rev": "3-89012"
   }
]

এখানে, _deleted ফিল্ডকে true সেট করা হয়েছে, যা CouchDB কে নির্দেশ দেয় যে ডকুমেন্টটি মুছে ফেলা উচিত।


4. Bulk Operations এর সুবিধা

  • পারফরম্যান্স বৃদ্ধি: একাধিক রিকুয়েস্ট পাঠানোর পরিবর্তে একযোগে অনেক ডকুমেন্টের ওপর অপারেশন (CRUD) করার মাধ্যমে সার্ভারের প্রতি রিকুয়েস্টের সংখ্যা কমানো যায়, যা সার্ভারের লোড কমাতে সাহায্য করে।
  • ব্যাচ প্রক্রিয়া: বড় অ্যাপ্লিকেশন এবং সিস্টেমে একযোগে একাধিক ডকুমেন্ট সংরক্ষণ বা আপডেট করার সময় Bulk Operations খুবই কার্যকরী।
  • ডেটার এককীকরণ: একাধিক ডকুমেন্টের পরিবর্তনগুলি একটি রিকুয়েস্টের মাধ্যমে প্রক্রিয়া করা হলে ডেটা সিঙ্ক্রোনাইজেশন সহজ হয়।

5. Bulk Operations Error Handling

যদি কোনো ডকুমেন্টের মধ্যে ভুল থাকে (যেমন: _rev মিসিং বা ভুল), তখন CouchDB একটি ত্রুটি রিপোর্ট করবে এবং সংশ্লিষ্ট ডকুমেন্টের জন্য error অথবা reason প্রদান করবে। উদাহরণস্বরূপ:

Response Example (with Errors):

[
   {
      "id": "doc1",
      "error": "conflict",
      "reason": "Document update conflict"
   },
   {
      "id": "doc2",
      "rev": "3-89012"
   }
]

এটি দেখায় যে doc1 ডকুমেন্টের আপডেট কনফ্লিক্ট হয়েছে, কিন্তু doc2 সফলভাবে আপডেট হয়েছে।


উপসংহার

Bulk Operations CouchDB-তে একাধিক ডকুমেন্ট একযোগে তৈরি, আপডেট বা মুছে ফেলতে সাহায্য করে। এটি সার্ভারের লোড কমানোর পাশাপাশি পারফরম্যান্সও উন্নত করতে সহায়ক। এই ফিচারটি বড় আকারের অ্যাপ্লিকেশন বা ডেটাবেস সিস্টেমে ডেটা পরিচালনা সহজ করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion